﻿/***************************************************************
 * 开发人员：网魂小兵@http://www.mozlite.com
 * 
 * 目标标本：4.0.30319.239
 * 
 * 最后修改：2011/12/19 18:24:12
 * ************************************************************/
namespace Mozlite.Common
{
    using System;
    using System.Linq;
    using System.Text;
    using System.Collections.Generic;

    /// <summary>
    /// 管理方法类。
    /// </summary>
    public class MediaManager
    {
        private MediaManager() { }

        private const string categoryCacheKey = "MediaCategories";
        /// <summary>
        /// 保存分类。
        /// </summary>
        /// <param name="category">分类实例。</param>
        /// <returns>返回执行结果。</returns>
        public static bool SaveCategory(MediaCategory category)
        {
            if (MediaDataProvider.Current.SaveCategory(category))
            {
                Caches.Remove(categoryCacheKey);
                return true;
            }
            return false;
        }
        /// <summary>
        /// 删除分类。
        /// </summary>
        /// <param name="categoryIDs">分类ID集合，以“,”分割。</param>
        /// <returns>返回删除结果。</returns>
        public static bool DeleteCategories(string categoryIDs)
        {
            if (MediaDataProvider.Current.DeleteCategories(categoryIDs))
            {
                Caches.Remove(categoryCacheKey);
                return true;
            }
            return false;
        }
        /// <summary>
        /// 获取分类实例。
        /// </summary>
        /// <param name="categoryID">分类ID。</param>
        /// <returns>返回分类实例对象。</returns>
        public static MediaCategory GetCategory(int categoryID) {
            return MediaDataProvider.Current.GetCategory(categoryID);
        }
        /// <summary>
        /// 加载分类列表。
        /// </summary>
        /// <returns>返回分类列表。</returns>
        public static Dictionary<int, MediaCategory> LoadCategories()
        {
            return Caches.Get<Dictionary<int, MediaCategory>>(categoryCacheKey, () => {
                return Caches.Max(categoryCacheKey, MediaDataProvider.Current.LoadCategories());
            });
        }


        private const string regionCacheKey = "MediaRegions";
        /// <summary>
        /// 保存地区。
        /// </summary>
        /// <param name="region">地区实例对象。</param>
        /// <returns>返回执行结果。</returns>
        public static bool SaveRegion(MediaRegion region)
        {
            if (MediaDataProvider.Current.SaveRegion(region))
            {
                Caches.Remove(regionCacheKey);
                return true;
            }
            return false;
        }
        /// <summary>
        /// 删除地区。
        /// </summary>
        /// <param name="regionIDs">地区ID，以“,”分割。</param>
        /// <returns>返回执行结果。</returns>
        public static bool DeleteRegions(string regionIDs)
        {
            if (MediaDataProvider.Current.DeleteRegions(regionIDs))
            {
                Caches.Remove(regionCacheKey);
                return true;
            }
            return false;
        }
        /// <summary>
        /// 获取地区实例
        /// </summary>
        /// <param name="regionID">地区ID。</param>
        /// <returns>返回地区实例对象。</returns>
        public static MediaRegion GetRegion(int regionID)
        {
            return MediaDataProvider.Current.GetRegion(regionID);
        }
        /// <summary>
        /// 加载地区列表。
        /// </summary>
        /// <returns>返回地区列表。</returns>
        public static Dictionary<int, MediaRegion> LoadRegions()
        {
            return Caches.Get<Dictionary<int, MediaRegion>>(regionCacheKey, () => {
                return Caches.Max(regionCacheKey, MediaDataProvider.Current.LoadRegions());
            });
        }
    }
}